/**
 * Procesadores de Lenguaje, curso 2009-2010
 * @author grupo 02
 *
 */

package compilador;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import traductor.AnalizadorLexico;
import traductor.AnalizadorSintactico;


public class Traductor {

    private static void intro(){
        System.out.println("\nTraductor a lenguaje objeto.");
        System.out.println("Procesadores de Lenguaje, curso 2009-2010 ");
        System.out.println("Grupo numero 02\n");
    }

    private static void uso(){
        System.out.println("Uso:");
        System.out.println("Interprete <archivo a traducir> <archivo generado de lenguaje objeto>");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length != 2){
            System.out.println("Numero de argumentos incorrecto");
            uso();
            System.exit(-1);
        }
        intro();
        
        FileReader origen = null;        
        try {
            origen = new FileReader(args[0]);
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo de codigo fuente no encontrado");
            System.exit(-1);
        }          
        AnalizadorLexico anLex = new AnalizadorLexico(origen);
        AnalizadorSintactico anSint = null;
        try {
            anLex.inicializa();
            anSint =  new AnalizadorSintactico(anLex, args[1]);
            anSint.analisisSintactico();
            ArrayList err = anSint.getErr();
            if (!err.isEmpty()) {
                System.out.println("Analisis sintactico terminado, se encontraron los siguientes errores:");
                for (int i = 0; i < err.size(); i++) {
                    System.out.println(err.get(i));
                }
            }
            else {
                System.out.println("Analisis sintactico completado correctamente");
            }
        } catch (Exception ex) {
            System.out.println("Analisis sintactico detenido\n" + ex.getMessage());
            System.exit(-1);
        }

    }


}
